
#ifndef PARALLAX_CONTAINER_H
#define PARALLAX_CONTAINER_H

// INCLUDES ********************************************************************

#include "DrawableContainer.h"

#include "Sprite.h"

// FORWARD DECLARATIONS ********************************************************

// *****************************************************************************

//! ParallaxContainer
//! 
//! Special DrawableContainer that will move it's childen at different speeds
//! to create the impression of depth.

// *****************************************************************************

namespace Meteor 
{
    class ParallaxContainer : public DrawableContainer
    {
        public:
            ParallaxContainer();
        
            explicit ParallaxContainer( const std::string& backgroundImage);
        
            ~ParallaxContainer();
        
            void MoveBy( const Vector2D& distance);
        
            void Update( const float deltaTime);
        
        private:
            const Vector2D AdjustChildPositionToBounds( Drawable* child, const Vector2D& distance);
        
    }; // end of class ParallaxContainer
    
} // end of namespace Meteor

#endif